// pages/staff/index.js
const request = require('../../utils/request')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    queryParam: {
      name: ''
    },
    employees: [],
    showAddModal: false,
    newEmployeeName: '',
    newEmployeePhone: '',
        // 商户多选数据
    merchants: [],
    selectedMerchantIds: []
  },
  // 搜索输入
  onSearchChange(e) {
    const val = e.detail.value || ''
    this.setData({
      'queryParam.name': val
    })
    // 立即刷新列表（如需防抖可改）
    this.fetchList()
  },

  clearName() {
    this.setData({
      'queryParam.name': ''
    })
    this.fetchList()
  },

  navigateBack() {
    wx.navigateBack()
  },
// 获取商户列表（供添加员工时多选）
  fetchMerchants() {
    return new Promise((resolve, reject) => {
      request.get('/admin-api/mini/home/getMerchant').then(res => {
        const data = res && (res.data || res) || []
        const list = Array.isArray(data) ? data : (data.list || [])
        // 兼容字段名可能不同
        this.setData({ merchants: list })
        resolve(list)
      }).catch(err => {
        console.error('获取商户失败', err)
        reject(err)
      })
    })
  },
  
    // 切换商户选中（多选）
    toggleMerchantSelection(e) {
      const id = e.currentTarget.dataset.id
      if (id == null) return
      const arr = [...this.data.selectedMerchantIds]
      const idx = arr.indexOf(id)
      if (idx === -1) arr.push(id)
      else arr.splice(idx, 1)
      this.setData({ selectedMerchantIds: arr })
    },
  
  // 列表请求
  fetchList() {
    wx.showLoading({
      title: '加载中'
    })
    request.get('/admin-api/mini/home/getMassUserStaff', this.data.queryParam).then(res => {
      wx.hideLoading()
      if (res && res.code === 0) {
        // 兼容后端返回格式，使用 res.data 或 res.data.list
        let list = res.data && Array.isArray(res.data) ? res.data : (res.data && res.data.list) || []
        
        // 处理商户名称显示（根据 merchantId 或 merchantIds 匹配商户名称）
        const merchantMap = {}
        this.data.merchants.forEach(m => {
          merchantMap[m.id] = m.name || m.title || m.shopName || ''
        })
        
        list = list.map(item => {
          let merchantNames = ''
          // 如果有 merchantIds 数组
          if (item.merchantIds && Array.isArray(item.merchantIds)) {
            merchantNames = item.merchantIds
              .map(id => merchantMap[id] || '')
              .filter(n => n)
              .join('、')
          }
          // 如果有单个 merchantId
          else if (item.merchantId) {
            merchantNames = merchantMap[item.merchantId] || ''
          }
          // 如果后端直接返回 merchantName 或 merchantNames
          else if (item.merchantNames) {
            merchantNames = item.merchantNames
          } else if (item.merchantName) {
            merchantNames = item.merchantName
          }
          return { ...item, merchantNames }
        })
        
        this.setData({
          employees: list
        })
      } else {
        // 若后端未返回标准结构，尝试直接赋值
        if (Array.isArray(res)) this.setData({
          employees: res
        })
      }
    }).catch(err => {
      wx.hideLoading()
      console.error('获取员工列表失败', err)
    })
  },

  // 打开/关闭弹窗
  openAddModal() {
    this.setData({
      showAddModal: true,
      newEmployeeName: '',
      newEmployeePhone: '',
      selectedMerchantIds: []
    })
  },
  closeAddModal() {
    this.setData({
      showAddModal: false
    })
  },

  onNewNameInput(e) {
    this.setData({
      newEmployeeName: e.detail.value
    })
  },
  onNewPhoneInput(e) {
    this.setData({
      newEmployeePhone: e.detail.value
    })
  },

  // 提交添加
  submitAddEmployee() {
    const name = (this.data.newEmployeeName || '').trim()
    const phone = (this.data.newEmployeePhone || '').trim()
    if (!name) {
      wx.showToast({
        title: '请输入姓名',
        icon: 'none'
      })
      return
    }
    if (!phone) {
      wx.showToast({
        title: '请输入手机号',
        icon: 'none'
      })
      return
    }
        // 至少一个商户可选（如需必选请启用下面校验）
    if (!this.data.selectedMerchantIds.length) {
      wx.showToast({ title: '请选择所属商户', icon: 'none' })
      return
    }
    wx.showLoading({
      title: '提交中'
    })
    const payload = { name, phone, merchantIds: this.data.selectedMerchantIds }
    request.post('/admin-api/mini/home/submitMassUserStaff', payload).then(res => {
      wx.hideLoading()
      if (res && res.code === 0) {
        wx.showToast({
          title: '添加成功',
          icon: 'success'
        })
        this.setData({
          showAddModal: false
        })
        this.fetchList()
      } else {
        wx.showToast({
          title: res && res.message ? res.message : '添加失败',
          icon: 'none'
        })
      }
    }).catch(err => {
      wx.hideLoading()
      console.error('添加员工失败', err)
      wx.showToast({
        title: '添加失败',
        icon: 'none'
      })
    })
  },

  // 删除员工
  deleteEmployee(e) {
    const id = e.currentTarget.dataset.id
    if (!id) return
    wx.showModal({
      title: '确认删除',
      content: '确定要删除该员工吗？',
      success: (res) => {
        if (res.confirm) {
          wx.showLoading({
            title: '删除中'
          })
          request.get('/admin-api/mini/home/deleteMassUserStaff', {
            id: id
          }).then(resp => {
            wx.hideLoading()
            if (resp && resp.code === 0) {
              wx.showToast({
                title: '删除成功',
                icon: 'success'
              })
              this.fetchList()
            } else {
              wx.showToast({
                title: resp && resp.message ? resp.message : '删除失败',
                icon: 'none'
              })
            }
          }).catch(err => {
            wx.hideLoading()
            console.error('删除员工失败', err)
            wx.showToast({
              title: '删除失败',
              icon: 'none'
            })
          })
        }
      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 先获取商户列表，再获取员工列表（确保商户映射可用）
    this.fetchMerchants().then(() => {
      this.fetchList()
    }).catch(() => {
      this.fetchList()
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

   /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.onLoad();
  },
  
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})